﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TMD.GT.Entidades;
using TMD.GT.AccesoDatos.Map;
using TMD.GT.AccesoDatos.Contrato;
using TMD.GT.AccesoDatos.Core;
using System.Data.Common;
using System.Data;


namespace TMD.GT.AccesoDatos.Implementacion
{
    public class CriterioEvaluacionData : DataBase, ICriterioEvaluacionData
    {
        public CriterioEvaluacionData(String connectionString)
            : base(connectionString)
        {
        }

      

        //modifico raul
        public List<CriterioEvaluacion> ListarCriteriosEvaluacionxComponente(Componente componente)
        {
            List<CriterioEvaluacion> listaCriterios = new List<CriterioEvaluacion>();

            using (DbCommand command = DB.GetStoredProcCommand("dbo.USP_CRITERIOEVALUACIONXCOMPONENTE_SEL"))
            {
                DB.AddInParameter(command, "@CODIGO_COMPONENTE", DbType.String, componente.CodigoComponente);
                using (IDataReader reader = DB.ExecuteReader(command))
                {
                    while (reader.Read())
                    {
                        listaCriterios.Add(CriterioEvaluacionMap.Select(reader));
                    }
                }
            }
            return listaCriterios;
        }


        public void ActualizarMonitoreo(int componente, int criterio, string nombrecriterio, decimal puntaje)
        {

            using (DbCommand command = DB.GetStoredProcCommand("dbo.USP_ACTUALIZA_MONITOREO_INS"))
            {
                DB.AddInParameter(command, "@CODIGO_COMPONENTE", DbType.Int32, componente);
                DB.AddInParameter(command, "@CODIGO_CRITERIO_REVISION", DbType.Int32, criterio);
                DB.AddInParameter(command, "@nombre_CRITERIO_REVISION", DbType.String, nombrecriterio);
                DB.AddInParameter(command, "@VALOR", DbType.Decimal, puntaje);
                DB.ExecuteNonQuery(command);
            }


        }


        public List<CriterioEvaluacion> ListarCriteriosEvaluacion()
        {
            List<CriterioEvaluacion> listaCriterios = new List<CriterioEvaluacion>();

            using (DbCommand command = DB.GetStoredProcCommand("GT.USP_CRITERIOEVALUACION_SEL"))
            {
                using (IDataReader reader = DB.ExecuteReader(command))
                {
                    while (reader.Read())
                    {
                        listaCriterios.Add(CriterioEvaluacionMap.Select(reader));
                    }
                }
            }

            return listaCriterios;
        }

        public void ActualizarEvaluacion(int componente, int criterio, int alineamiento, decimal puntaje)
        {
            using (DbCommand command = DB.GetStoredProcCommand("dbo.USP_COMPONENTE_EVALUACION"))
            {
                DB.AddInParameter(command, "@CODIGO_COMPONENTE", DbType.Int32, componente);
                DB.AddInParameter(command, "@CODIGO_CRITERIO", DbType.Int32, criterio);
                DB.AddInParameter(command, "@CODIGO_CICLO", DbType.Int32, alineamiento);
                DB.AddInParameter(command, "@VALOR", DbType.Decimal, puntaje);
                DB.ExecuteNonQuery(command);
            }
        }


        //public List<CriterioEvaluacion> ListarCriteriosEvaluacion(TipoComponente tipoComponente)
        //{
        //    List<CriterioEvaluacion> listaCriterios = new List<CriterioEvaluacion>();

        //    using (DbCommand command = DB.GetStoredProcCommand("dbo.USP_CRITERIOEVALUACION_SEL"))
        //    {
        //        DB.AddInParameter(command, "@CODIGO_TIPO", DbType.String, tipoComponente.CODIGO_TIPO);
        //        using (IDataReader reader = DB.ExecuteReader(command))
        //        {
        //            while (reader.Read())
        //            {
        //                listaCriterios.Add(CriterioEvaluacionMap.Select(reader));
        //            }
        //        }
        //    }

        //    return listaCriterios;
        //}

    }
}
